widget: Compute child point directly when picking
authorTimm Bäder <mail@baedert.org>
Tue, 19 Feb 2019 07:51:51 +0000 (08:51 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 19 Feb 2019 18:22:10 +0000 (19:22 +0100)
gtk/gtkwidget.c

index f6a31d07a37568078ff1173e2a64256b0d0194bd..6a62f5b3e496d5057faf3fc0c65dee69ade2ff56 100644 (file)
@@ -819,12 +819,16 @@ gtk_widget_real_pick (GtkWidget *widget,
        child;
        child = _gtk_widget_get_prev_sibling (child))
     {
+      GtkWidgetPrivate *priv = gtk_widget_get_instance_private (child);
+      graphene_matrix_t inv;
       GtkWidget *picked;
-      double dx, dy;
+      graphene_point_t p;
 
-      gtk_widget_translate_coordinatesf (widget, child, x, y, &dx, &dy);
+      graphene_matrix_inverse (&priv->transform, &inv);
+      graphene_point_init (&p, x, y);
+      graphene_matrix_transform_point (&inv, &p, &p);
 
-      picked = gtk_widget_pick (child, dx, dy);
+      picked = gtk_widget_pick (child, p.x, p.y);
       if (picked)
         return picked;
     }